package com.reliable.service.service;

import com.reliable.api.dto.largescreen.*;

import java.util.Date;
import java.util.List;

/**
 * 首页大屏KPI数据统计 服务层
 */
public interface ILargeScreenService {

    /**
     * 获取首页KPI数据展示
     * 包括今日/本周/本月的高风险会话和可疑交易统计数据
     *
     * @return KPI统计数据
     */
    LargeScreenKpiData getKpiData();

    /**
     * 获取高风险会话日增量趋势数据
     *
     * @return 趋势数据列表
     */
    List<RiskTrendData> getHighRiskSessionTrendData();

    /**
     * 获取可疑交易日新增趋势数据
     *
     * @return 趋势数据列表
     */
    List<RiskTrendData> getSuspectTransactionTrendData();

    /**
     * 获取可疑收款账户类型分布数据
     *
     * @return 收款类型分布数据列表
     */
    List<CollectionTypeData> getCollectionTypeData();

    /**
     * 获取高风险会话的敏感词触发占比数据
     *
     * @return 敏感词触发占比数据
     */
    KeywordRiskData getKeywordRiskData();

    /**
     * 获取交易成功率与失败率数据
     *
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 交易成功率与失败率数据
     */
    TransactionSuccessData getTransactionSuccessData(Date startTime, Date endTime);

    /**
     * 获取最近事件数据
     *
     * @return 事件数据列表
     */
    List<EventData> getRecentEvents();

    /**
     * 获取今日数据统计
     *
     * @return 今日数据统计
     */
    TodayData getTodayData();

    /**
     * 获取已提取交易数量
     *
     * @return 已提取交易数量
     */
    Integer getExtractedTransactions();

    /**
     * 获取总量数据统计
     *
     * @param totalMessages 总对话数量
     * @param totalSessions 总会话数量
     * @param analyzedSessions 已分析会话数量
     * @return 总量数据统计
     */
    TotalData getTotalData(Integer totalMessages, Integer totalSessions, Integer analyzedSessions);
}